﻿//using System;
//using System.Collections.Generic;
//using System.Text;

//namespace System
//{
//	/// <summary>
//	/// Defines Extension-Methods for classes in the <see cref="System"/> namespace.
//	/// </summary>
//	public static class ArgusPCLibExtensions
//	{
//		public static void Initialize(this Array array, object value)
//		{
//			if (array.GetType().GetElementType() != value.GetType())
//				throw new ArgumentException("Type mismatch!");

//			int[] indices = new int[array.Rank];
//			int[] length = new int[array.Rank];
//			for (int dim = 0; dim < array.Rank; dim++)
//			{
//				indices[dim] = 0;
//				length[dim] = array.GetLength(dim);
//			}

//			while (indices[0] < length[0])
//			{
//				array.SetValue(value, indices);

//				indices[array.Rank - 1]++;
//				for (int i = array.Rank - 1; i > 0; i--)
//				{
//					if (indices[i] < length[i])
//						break;

//					indices[i] = 0;
//					indices[i - 1]++;
//				}
//			}
//		}

//		public static void CopyTo<T>(this T[,] source, T[,] destination)
//		{
//			for (int i = 0; i < source.GetLength(0); i++)
//			{
//				for (int j = 0; j < source.GetLength(1); j++)
//				{
//					destination[i, j] = source[i, j];
//				}
//			}
//		}
//	}
//}

//namespace System.Collections
//{
//	/// <summary>
//	/// Defines Extension-Methods for classes in the <see cref="System.Collections"/> namespace.
//	/// </summary>
//	public static class ArgusPCLibExtensions
//	{
//		/// <summary>
//		/// Get the object at the specified index in an <see cref="IEnumerable"/>.
//		/// </summary>
//		public static object At(this IEnumerable enumerable, int index)
//		{
//			int i = 0;
//			IEnumerator e = enumerable.GetEnumerator();
//			while (e.MoveNext() == true)
//			{
//				if (i == index)
//					return e.Current;
//				i++;
//			}
//			throw new ArgumentOutOfRangeException("index");
//		}

//		public static bool RemoveFirst(this IList list)
//		{
//			if (list.Count < 1)
//				return false;
//			list.RemoveAt(0);
//			return true;
//		}

//		public static bool RemoveLast(this IList list)
//		{
//			if (list.Count < 1)
//				return false;
//			list.RemoveAt(list.Count - 1);
//			return true;
//		}
//	}
//}

//namespace System.Collections.Generic
//{
//	/// <summary>
//	/// Defines Extension-Methods for classes in the <see cref="System.Collections.Generic"/> namespace.
//	/// </summary>
//	public static class ArgusPCLibExtensions
//	{
//		/// <summary>
//		/// Get the object at the specified index in an <see cref="IEnumerable{T}"/>.
//		/// </summary>
//		public static T At<T>(this IEnumerable<T> enumerable, int index)
//		{
//			int i = 0;
//			IEnumerator<T> e = enumerable.GetEnumerator();
//			while (e.MoveNext() == true)
//			{
//				if (i == index)
//					return e.Current;
//				i++;
//			}
//			throw new ArgumentOutOfRangeException("index");
//		}

//		public static bool RemoveFirst<T>(this IList<T> list)
//		{
//			if (list.Count < 1)
//				return false;
//			list.RemoveAt(0);
//			return true;
//		}

//		public static bool RemoveLast<T>(this IList<T> list)
//		{
//			if (list.Count < 1)
//				return false;
//			list.RemoveAt(list.Count - 1);
//			return true;
//		}
//	}
//}